package DataStructure.arrayRelevant.xor;

import Common.Constant.C;
import Common.Utils.UTFactory;
import org.junit.Test;

/**
 * @author 蔚蔚樱
 * @version 1.0
 * @date 2020/8/31
 * @author—Email micromicrohard@outlook.com
 * @blogURL https://blog.csdn.net/Micro_Micro_Hard
 * @description 找出数组中唯一个仅出现一次的数
 * 在一组数中，每个数都出现了两次，但是出现了唯独一个数，仅出现一次，找出这个数
 * tips:异或
 */

public class FindNum_Twice_One {

    @Test // 验证功能：用于全量测试
    public void TestFunc() throws Exception {
        UTFactory.FullTest(this.getClass());
    }

    @Test // 调试功能 : 用于复现错误测试案例
    public void DoubleTrack() throws Exception {
        String input = "";
        String output = "";
        UTFactory.DebugTest(this.getClass(), input, output);
    }

    /**
     * 数组示例：[2,2,3,3,4]
     * 0000 0010
     * 0000 0010
     * 0000 0011
     * 0000 0011
     * 0000 0100
     */
    public int Solution(int[] nums) {
        if (nums == null || nums.length == 0) {
            return C.ErrorNum;
        }
        int value = 0;
        for (int num : nums) {
            value ^= num;
        }
        return value;
    }
}
